~ (побитовое НЕТ)

Доступность

Flash Player 5.

Синтаксис

~ expression

Параметры

expression Число.

Возвращает

32-битное целое число.

Описание

Оператор (побитовый); также известен как оператор изменения знака числа или поразрядный оператор изменения знака числа. Конвертируетexpression в 32-битное целое беззнаковое число, затем вычитает 1 и изменяет знак числа . Это когда каждый бит из 0 устанавливается в 1 и каждый бит из 1 устанавливается в 0. В результате получается 32-битное целое число.

Для примера, шестнадцатеричное 0x7777 представляется как бинарное число:

0111011101110111

побитовое НЕТ для этого числа, ~0x7777, есть бинарное число :

1000100010001000

Как шестнадцатеричное, это 0x8888. Следовательно, ~0x7777 есть 0x8888.

Обычно оператор ~ (побитовое НЕТ) используется для представления флага бита (булевое значение в одном бите).

Числа с плавающей точкой преобразуются в целые числа, путём отбрасывания всех цифр после точки. Положительные целые числа конвертируются в шестнадцатеричные с максимальным значением 4294967295 или 0xFFFFFFFF; числа со значением большим чем максимум, после конвертации, отбрасывают "лишние цифры". Отрицательные числа конвертируется в шестнадцатеричные с минимальным значением -2147483648 или 0x800000000; числа со значением меньшим чем минимум, после конвертации, отбрасывают "лишние цифры".

Возвращаемое значение интерпретируется как два инвертированных числа со значением в интервале от -2147483648 до 2147483647.

Для дополнительной информации, смотрите "Старшинство и ассоциативность операторов" в Использовании ActionScript во Флэш .

Пример

Следующий пример демонстрирует использование ~ (побитовое НЕТ) с флагом битов :

var ReadOnlyFlag:Number = 0x0001;
// определяем бит 0 как только читаемый флаг
var flags:Number = 0;
trace(flags);
/* Чтобы установить только читаемый флаг в переменной флагов, 
следующий код использует побитовое ИЛИ: */
flags |= ReadOnlyFlag;
trace(flags);
/* Чтобы очистить только читаемый флаг в переменной флагов, 
сначала создаётся маска, используя побитовое НЕ для переменной ReadOnlyFlag.
В маске, каждый бит - 1, если это не только читаемый флаг.
Когда используется побитовое И с маской, очищается только читаемый флаг. 
Следующий код создаёт маску и выполняет побитовое И: */
flags &= ~ReadOnlyFlag;
trace(flags);
/* выводится:
  0
  1
  0
*/

См.также

& (побитовое И), &= (присваивание побитового И), ^ (побитовое исключающее ИЛИ), ^= (побитовое исключающее ИЛИ с присвоением), | (побитовое ИЛИ), |= (присваивание побитового ИЛИ)